# 2025.06.28力扣网刷题
# 字符串转化后的各位数字之和——字符串、模拟——简单
# 给你一个由小写字母组成的字符串 s ，以及一个整数 k 。你的任务是通过一种特殊处理将字符串转为整数，然后通过重复对它的数位求和 k 次来进行转换。更具体地说，执行以下步骤：
# 用字母在字母表中的位置 替换 该字母，将 s 转化 为一个整数（也就是，'a' 用 1 替换，'b' 用 2 替换，... 'z' 用 26 替换）。
# 接着，将整数 转换 为其 各位数字之和 。
# 共重复 转换 操作（第 2 步） k 次 。
# 例如，如果 s = "zbax" 且 k = 2 ，那么执行下述步骤后得到的结果是整数 8 ：
# 转化："zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
# 转换 #1：262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
# 转换 #2：17 ➝ 1 + 7 ➝ 8
# 返回执行上述 操作 后得到的 结果整数。
# 示例 1：
# 输入：s = "iiii", k = 1
# 输出：36
# 解释：
# 操作如下：
# 转化："iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
# 转换 #1：9999 ➝ 9 + 9 + 9 + 9 ➝ 36
# 因此，结果整数为 36 。
# 示例 2：
# 输入：s = "leetcode", k = 2
# 输出：6
# 解释：
# 操作如下：
# 转化："leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
# 转换 #1：12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
# 转换 #2：33 ➝ 3 + 3 ➝ 6
# 因此，结果整数为 6 。
# 示例 3：
# 输入：s = "zbax", k = 2
# 输出：8
# 提示：
# 1 <= s.length <= 100
# 1 <= k <= 10
# s 由小写英文字母组成

class Solution(object):
    def getLucky(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: int
        """
        num_list = list(s)
        length = len(num_list)
        for i in range(length):
            num_list[i] = str(ord(num_list[i]) - ord('a') + 1)
        ans = int(''.join(num_list))
        while k:
            tmp = 0
            while ans:
                tmp += ans % 10
                ans //= 10
            ans = tmp
            k -= 1
        return ans

if __name__ == '__main__':
    s = Solution()
    print(s.getLucky("iiii", 1))
    print(s.getLucky("leetcode", 2))
